package boundary;

import java.util.Scanner;

import fachklassen.controls.Bestellungsverwaltung;

public class Bestellungsdialog {
	private Bestellungsverwaltung bv;
	private Scanner ein= new Scanner(System.in);
	private Kundendialog kd;	//neuer Code
	private Produktdialog pd;	//neuer Code
	
	public Bestellungsdialog() {
		//=========== neuer Code ==============
		kd = new Kundendialog();
		pd = new Produktdialog();
		bv = new Bestellungsverwaltung(kd.getKv(), pd.getPv());
		//=====================================
		beispieldatenEinspielen();
	}
	
	private void beispieldatenEinspielen(){
		// nur zur F�llung, kein tieferer Sinn
		for(int i=1;i<=15;i++){
			bv.neueBestellungAltkunde(i%10+1);
			for(int j=1;j<10-(i/2);j++)
				bv.bestellungErgaenzen(i,j,18-i-j);
		}
	}
	
	public void starten(){
		int eingabe=-1;
		while (eingabe!=0){
			System.out.print("Was wollen Sie machen?\n"
					+" (0) Bestellungsverwaltung beenden\n"
					+" (1) Bestellung für Neukunden hinzufügen\n"
					+" (2) Bestellung für Altkunden hinzufügen\n"
					+" (3) Bestellposten für eine Bestellung hinzufügen\n"
					+" (4) Bestellposten für eine Bestellung ändern\n"
					+" (5) Bestellposten für eine Bestellung löschen\n"
					+" (6) Bestellungsdaten einer Bestellung anzeigen\n"
					+" (7) Alle Bestellungen zeigen\n"
					+" (8) Gesamtkosten für eine Bestellung zeigen\n"
					+" (9) Kundenverwaltung starten\n"
					+"(10) Produktverwaltung starten\n"
					+"(11) Anzahl Bestellungen eines Kunden\n"
					+"(12) Häufigkeit einer Produktbestellung:   ");
			eingabe=ein.nextInt();
			switch(eingabe){
				case 1:{
					bestellungNeukundeHinzufuegen();
					break;
				}
				case 2:{
					bestellungAltkundeHinzufuegen();
					break;
				}
				case 3:{
					bestellpostenHinzufuegen();
					break;
				}
				case 4:{
					bestellpostenAendern();
					break;
				}
				case 5:{
					bestellpostenLoeschen();
					break;
				}
				case 6:{
					bestellungsdatenAnzeigen();
					break;
				}
				case 7:{
					System.out.println(bv);
					break;
				}
				case 8:{
					bestellungssummeBerechnen();
					break;
				}
				case 9:{
					kd.starten();
					break;
				}
				case 10:{
					pd.starten();
					break;
				}
				case 11:{
					bestellungsanzahlFuerKundenBerechnen();
					break;
				}
				case 12:{
					bestellteAnzahlProProduktBerechnen();
					break;
				}
			}
		}
	}
	
	private void bestellteAnzahlProProduktBerechnen() {
		System.out.println("Produktnummer: ");
		int prodNr=ein.nextInt();
		System.out.println("Das Produkt wurde "+bv.gibAnzahlBestellteProdukte(prodNr)+" mal bestellt.");
		
	}

	private void bestellungsanzahlFuerKundenBerechnen() {
		System.out.println("Kundennummer: ");
		int knr=ein.nextInt();
		System.out.println("Der Kunde hat "+bv.gibAnzahlBestellungenFuerKunde(knr)+" Bestellungen.");
	}

	private void bestellungssummeBerechnen() {
		System.out.println("Bestellnummer: ");
		int bstNr=ein.nextInt();
		System.out.println("Summe: "+bv.berechneGesamtpreis(bstNr));
	}
	
	private void bestellpostenLoeschen() {
		System.out.println("Bestellnummer: ");
		int bstNr=ein.nextInt();
		System.out.println("Produktnummer: ");
		int prodNr=ein.nextInt();
		bv.bestellungPostenLoeschen(bstNr, prodNr);
		System.out.println("Die Prdukte"+prodNr+" wurden aus der Bestellung "+bstNr+" gelöscht.");
	}

	private void bestellpostenAendern() {
		System.out.println("Bestellnummer: ");
		int bstNr=ein.nextInt();
		System.out.println("Produktnummer: ");
		int prodNr=ein.nextInt();
		System.out.println("Anzahl: ");
		int anzahl=ein.nextInt();
		bv.bestellungAendern(bstNr, prodNr, anzahl);
		System.out.println("Die Anzahl der Prdukte "
				+prodNr+" der Bestellung "
				+bstNr+" wurde auf "
				+anzahl+" geändert.");
		
	}

	private void bestellpostenHinzufuegen() {
		System.out.println("Bestellnummer: ");
		int bstNr=ein.nextInt();
		System.out.println("Produktnummer: ");
		int prodNr=ein.nextInt();
		System.out.println("Anzahl: ");
		int anzahl=ein.nextInt();
		bv.bestellungErgaenzen(bstNr, prodNr, anzahl);
		System.out.println("Es wurden "
				+anzahl+" Produkte (Nr.: "
				+prodNr+") der Bestellung "
				+bstNr+" hinzugefügt.");
	}

	private void bestellungNeukundeHinzufuegen() {
		System.out.print("Kundenname: ");
		String name=ein.next();
		System.out.print("Adresse: ");
		String adresse=ein.next();
		int knr = bv.neueBestellungNeukunde(name, adresse);
		System.out.println("Neue Bestellung für den Kunden "+knr+" angelegt.");
	}
	
	
	private void bestellungAltkundeHinzufuegen(){
		System.out.println("Kundennummer: ");
		int knr=ein.nextInt();
		bv.neueBestellungAltkunde(knr);
		System.out.println("Neue Bestellung für den Kunden "+knr+" angelegt.");
	}
	
	private void bestellungsdatenAnzeigen(){
		System.out.println("Bestellnummer: ");
		int bstNr=ein.nextInt();
		System.out.println(bv.bestellungZeigen(bstNr));
	}
	
	public static void main(String[] s){
		new Bestellungsdialog().starten();
	}

}
